// Vue过滤器

/**
 * @description 金额格式化千分
 * @param String money 金额
 * @return 格式化后的字符串
 */
function moneyFormat(money){
    return (money + '').replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g, '$1,');
};

/**
 * @description 格式化时间
 * @param {String} date 需格式化的时间
 * @param {String} format 时间格式
 * @return {String} 格式化后的时间
 * @example formatTime(date,"YYYY-MM-DD")
 */
function formatTime(date, format = "YYYY-MM-DD") {
    date = new Date(date.toString().replace(/-/g, "/"));
    let year = new Date(date.getFullYear(), 0, 1);
    let ret;
    let opt = {
        "Y+": date.getFullYear().toString(), // 年
        "M+": (date.getMonth() + 1).toString(), // 月
        "D+": date.getDate().toString(), // 日
        "W+": Math.ceil(((date - year) / 86400000 + year.getDay()) / 7).toString(), // 第几周
        "E+": date.getDay() == 0 ? "7" : date.getDay().toString(), // 周几
        "e+": "日一二三四五六".charAt(date.getDay()), // 周几中文
        "h+": date.getHours().toString(), // 时
        "m+": date.getMinutes().toString(), // 分
        "s+": date.getSeconds().toString() // 秒
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(format);
        if (ret) format = format.replace(ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0"));
    }
    return format;
}

/**
 * @description 查询时间过去多久了
 * @param {String} date 查询的指定时间
 * @param {String} format 时间格式
 * @return {String} 查询到的时间
 * @example pastTime(date,"YYYY-MM-DD")
 */
function pastTime(date = new Date(), format = "YYYY-MM-DD") {
    let timer = new Date().getTime() - new Date(date.replace(/-/g, "/")).getTime();
    timer = parseInt(timer / 1000);
    let tips = "";
    switch (true) {
        case timer < 300:
            tips = "刚刚";
            break;
        case timer >= 300 && timer < 3600:
            tips = parseInt(timer / 60) + "分钟前";
            break;
        case timer >= 3600 && timer < 86400:
            tips = parseInt(timer / 3600) + "小时前";
            break;
        case timer >= 86400 && timer < 2592000:
            tips = parseInt(timer / 86400) + "天前";
            break;
        case timer >= 2592000 && timer < 365 * 86400:
            tips = parseInt(timer / (86400 * 30)) + "个月前";
            break;
        default:
            tips = formatTime(date.replace(/-/g, "/"), format);
    }
    return tips;
}

export default {
    moneyFormat,
    formatTime,
    pastTime
}
